﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Systemet.Views
{
    public partial class AktivitetKort : UserControl
    {
        private Domain.AktivitetsController aKControl;
        private SideViews.SideAktivitet aktivSideKort;
        
        private bool Isnew;

        public AktivitetKort()
        {
            
            InitializeComponent();
            AccessController.Instance.MainView = this;
            groupBoxAktivitetRedInformation.Enabled = AccessController.Instance.UserRoleLoggedInUser.AktivitetskortLäggTill;
            btnAndraAktivitet.Enabled = AccessController.Instance.UserRoleLoggedInUser.AktivitetskortTaBort;
            Editable(false);
            groupBoxAktivitetRedInformation.Enabled = AccessController.Instance.KostnadsBudgetUnlocked;
            btnTaBortAktivitet.Enabled = false;
     
        }
        public void GetSearchOptions(string kategori, string namn, string id)
        {
            aKControl = new Domain.AktivitetsController();
            updateDGVInMain(aKControl.updateDgv(kategori, namn, id));
        }


        public void updateDGVInMain(IEnumerable<Aktivietetsregister> aktiviter)
        {
            if (dGVAktivitetMain.Focused == false)
            {
                clearText();
                Editable(false);
            }
            dGVAktivitetMain.DataSource = aktiviter;
            dGVAktivitetMain.Columns[5].Visible = false;
        }
        //Ny aktivitet
        private void btnNyAktivitet_Click(object sender, EventArgs e)
        {
            Isnew = true;
            Editable(true);
            tBAktivitetsNamn.Focus();
        }
        //Editerbar
        private void Editable(bool IsEditable)
        {
            if (Isnew)
            {
                cmbAvdelning.Enabled = IsEditable;
                tBAktivitetsNamn.Enabled = IsEditable;
                btnAndraAktivitet.Enabled = false;
                clearText();
            }
            else
            {
               
                tBAktivitetsNamn.Enabled = IsEditable;
                btnAndraAktivitet.Enabled = IsEditable;
            
                cmbAvdelning.Enabled = false;
            }
        }
        //Sparar
        private void btnSparaAktivitet_Click(object sender, EventArgs e)
        {
            aKControl = new Domain.AktivitetsController();
            
            string avdelning = cmbAvdelning.Text;
            string aktivitetsnamn = tBAktivitetsNamn.Text;
            string aktivID = tBAktivitetsID.Text;
            bool isSuccessfull = aKControl.ValidateAktivitet(aktivID ,avdelning, aktivitetsnamn, Isnew);
           if (!isSuccessfull)
           {
               MessageBox.Show(("Aktivitet finns redan registrerad."), "Varning", MessageBoxButtons.OK, MessageBoxIcon.Error);
           }
           else
           {
               if (!Isnew)
               {
                   MessageBox.Show(("Aktivtet är ändrad."), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
               }
               else
               {
                   MessageBox.Show(("Ny aktivitet är skapad."), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   aKControl.UpdateComBo();
               }
              dGVAktivitetMain.DataSource = aKControl.updateDgv("", "", aktivID);
           }

           btnTaBortAktivitet.Enabled = false;
        }
        //Aktivitetsnamnen är längre än tre
        private void ValidateAktivitetsLength(object sender, EventArgs e)
        {
            if (tBAktivitetsNamn.Text.Length > 3 && cmbAvdelning.Text != "")
            {
                btnSparaAktivitet.Enabled = true;
            }
            else
            {
                btnSparaAktivitet.Enabled = false;
            }

        }
        //Klicket i DGV
        private void dGVAktivitetMain_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            clearText();
            Editable(false);
            int currentRow = dGVAktivitetMain.CurrentCell.RowIndex;
            if (dGVAktivitetMain.Rows[currentRow].Cells[0].Value != null)
            {
                tBAktivitetsID.Text = dGVAktivitetMain.Rows[currentRow].Cells[0].Value.ToString();
            }
            if (dGVAktivitetMain.Rows[currentRow].Cells[1].Value != null)
            {
                tBAktivitetsNamn.Text = dGVAktivitetMain.Rows[currentRow].Cells[1].Value.ToString();
            }
            if (dGVAktivitetMain.Rows[currentRow].Cells[2].Value != null)
            {
                cmbAvdelning.Text = dGVAktivitetMain.Rows[currentRow].Cells[2].Value.ToString();
            }

            btnAndraAktivitet.Enabled = AccessController.Instance.UserRoleLoggedInUser.AktivitetskortTaBort;
           
            Isnew = false;
        }
        //Ändra aktivitet
        private void btnAndraAktivitet_Click(object sender, EventArgs e)
        {
            Isnew = false;
            Editable(true);
            btnAndraAktivitet.Enabled = false;
        }
        
        private void clearText()
        {
            cmbAvdelning.Text = "";
            tBAktivitetsID.Text = "";
            tBAktivitetsNamn.Text = "";
        }
    }
}
